package com.atguigu.gmall.cart.rpc;

import com.atguigu.gmall.cart.entity.CartInfo;
import com.atguigu.gmall.cart.service.CartService;
import com.atguigu.gmall.cart.vo.AddItemVo;
import com.atguigu.gmall.cart.vo.AddSuccessVo;
import com.atguigu.gmall.common.constant.RedisConst;
import com.atguigu.gmall.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author lfy
 * @Description
 * @create 2023-07-29 11:48
 */
@Slf4j
@RequestMapping("/api/inner/cart")
@RestController
public class CartRpcController {


    @Autowired
    CartService cartService;
    @PostMapping("/addtocart")
    public Result<AddSuccessVo> addToCart(@RequestBody AddItemVo vo,HttpServletRequest request){
        //给购物车中保存一个商品

        //登录： 【用户购物车】   cart:info:用户id；  hash（key：商品id， value：商品json数据）
        //未登录：【临时购物车】 cart:info:临时id； hash（key：商品id， value：商品json数据）

        //1、根据当前登录情况，决定操作哪个购物车？
        String cartKey = cartService.determinCartKey();

        //2、把指定的商品给购物车中添加
        AddSuccessVo successVo = cartService.addItemToCart(cartKey,vo.getSkuId(),vo.getSkuNum());


        return Result.ok(successVo);
    }

    /**
     * 删除选中的
     * @return
     */
    @GetMapping("/delete/checked")
    public Result deleteChecked(){

        cartService.deleteChecked(cartService.determinCartKey());
        return Result.ok();
    }

    /**
     * 获取选中的所有商品
     * @return
     */
    @GetMapping("/checked/list")
    public Result<List<CartInfo>> getChecked(){
        List<CartInfo> infos = cartService.getChecked(cartService.determinCartKey());
        return Result.ok(infos);
    }
}
